package org.company.earth.arithmetic;

import java.util.List;

public class SelectSort<T> extends BaseSort<T> {

    /**
     * 选择排序
     * 不稳定算法
     */
    @Override
    public void sort(List<T> list) {
        for(int i = 0 ; i < list.size() - 1 ; i++) {
            this.selectSort(list, list.size() - i - 1);
        }
    }
    
    /**
     * 选择排序,选择[0,p]中最大的元素，然后方到p位置
     * @param list
     * @param p
     */
    public void selectSort(List<T> list,int p) {
        int max = 0;
        for(int i= 1 ; i < p + 1 ; i++) {
            if(this.gt(list.get(i), list.get(max))) {
                max = i;
            }
        }
        this.swap(list, p, max);
        this.print(list);
    }
}
